package com.headStorm.concurrent.manyThread;

public class ManyThreadDemo {

    public static void main(String[] args) {

        /**
         * java创建线程的四种方法
         * 1）继承Thread类创建线程
         * 2）实现Runnable接口创建线程
         * 3）使用Callable和Future创建线程
         * 4）使用线程池例如用Executor框架
         */

        //1.继承
        /**
         * 通过继承Thread类来创建并启动多线程的一般步骤如下
         *
         * 1】定义Thread类的子类，并重写该类的run()方法，该方法的方法体就是线程需要完成的任务，run()方法也称为线程执行体。
         *
         * 2】创建Thread子类的实例，也就是创建了线程对象
         *
         * 3】启动线程，即调用线程的start()方法
         */
        new Thread1().start();
        //new Thread2().start();

        //2.实现runnable接口
        /**
         *通过实现Runnable接口创建并启动线程一般步骤如下：
         * 1】定义Runnable接口的实现类，一样要重写run()方法，这个run（）方法和Thread中的run()方法一样是线程的执行体
         * 2】创建Runnable实现类的实例，并用这个实例作为Thread的target来创建Thread对象，这个Thread对象才是真正的线程对象
         * 3】第三部依然是通过调用线程对象的start()方法来启动线程
         */
        new Thread(new Task()).start();

        //3.使用Callable和Future创建线程
        /**
         *
         */



        //4.使用线程池来创建线程
        /**
         * 篇幅较大，详见ThreadPoolUseDemo
         */


    }
}

class Task implements Runnable{
    @Override
    public void run() {
        while(true){
            System.out.println(Thread.currentThread().getName()+"run()");
        }
    }
}
